<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class MY_Controller extends CI_Controller {

    public function __construct() 
    {
    	parent::__construct();
    	$this->_inicia_sessao();

    	if ($this->_function_exception() === FALSE)
    	{
       		$this->_check_session();
    	}
    }

    /**
     * Se a sessão não estiver iniciada inicia a sessão
     * @return void
     */
    private function _inicia_sessao()
    {
    	if (! isset($_SESSION))
    	{
    		session_start();
    	}
    }

    /**
     * Redireciona para a tela de login se o usuário perder a sessão
     * @return void
     */
    private function _check_session()
    {
    	if (! isset($_SESSION['usuario']))
    	{
    		redirect('login/autenticacao', 'refresh');
    	}
    }

    /**
     * Funções que não seram verificadas se a sessão já existe, se não existir essa função quando a sessão for perdida e redirecinar cairá em um loop infinito
     * @return bool
     */
    private function _function_exception()
    {	
    	$lista_excecao[] = 'login/index';
    	$lista_excecao[] = 'login/autenticacao';
		$lista_excecao[] = 'login/login_usuario';

    	// Classe e método que estão herdando da classe base
    	$acesso = $this->router->fetch_class() . '/' . $this->router->fetch_method();

    	return in_array($acesso, $lista_excecao) ? TRUE : FALSE;
    }

    
}
